Longest Palindromic Substring
Problem page:https://leetcode.com/problems/longest-palindromic-substring
Solution
class Solution:
def longestPalindrome(self, s: str) -> str:
n = len(s)
dp = [[-1]*n for _ in range(n)]
def helper(i, j):
if dp[i][j] != -1:
return dp[i][j] == 1
if i >= j:
dp[i][j] = 1
return True
if s[i] == s[j]:
dp[i][j] = helper(i + 1, j - 1)
return dp[i][j] == 1
dp[i][j] = 0
return False
max_len = 0
start = 0
for i in range(n):
for j in range(i, n):
if helper(i,j):
if j - i + 1 > max_len:
max_len = j - i + 1
start = i
return s[start: start + max_len]
Complexity
- time: O(n * n)
- space: O(n * n)